package com.cw.jeeyt.service.intf.system;

import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.cw.jeeyt.service.bo.system.SystemAttachBo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 附件信息业务接口
  * @author chenw
 * @version 1.0.0
 */
public interface SystemAttachService {

    /**
     * 删除附件信息
     *
     * @param systemAttachBo
     */
    void delete(SystemAttachBo systemAttachBo) throws Exception;

    /**
     * 更新附件信息
     *
     * @param systemAttachBo
     */
    void update(SystemAttachBo systemAttachBo) throws Exception;

    /**
     * 根据主键查询附件信息
     *
     * @param id
     * @return
     */
    SystemAttachBo getSystemAttachById(String id) throws Exception;

    /**
     * 新增附件信息
     *
     * @param systemAttachBo
     * @return
     */
    Integer insert(SystemAttachBo systemAttachBo) throws Exception;

    /**
     * 分页查询附件信息
     *
     * @param systemAttachBo
     * @param startNum
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<SystemAttachBo> queryByPage(SystemAttachBo systemAttachBo, Integer startNum, Integer pageSize)
    throws Exception;

    /**
     * 上传附件到数据库
     *
     * @param fileMap
     * @return
     * @throws Exception
     */
    String uploadAttachToDB(Map<String, MultipartFile> fileMap) throws Exception;

    /**
     * 上传附件到目录
     *
     * @param fileMap 附件map
     * @author niezm;
     * @since 2015-5-25 上午10:01:27
     */
    String uploadAttachToDirectory(Map<String, MultipartFile> fileMap, String path) throws Exception;

    /**
     * 上传附件到目录以及数据库
     *
     * @param fileMap 附件map
     * @param path 路径
     * @author niezm;
     * @since 2015-5-25 上午10:01:27
     */
    String uploadAttachToDirectoryAndDb(Map<String, MultipartFile> fileMap, String path) throws Exception;

    /**
     * 根据objectId查询附件信息
     *
     * @param objectId
     * @return
     * @throws Exception
     */
    List<SystemAttachBo> getAttachListByObjectId(String objectId) throws Exception;

    /**
     * 保存附件以及关联关系信息
     *
     * @param objectId
     * @param attachType 附件类型
     * @param fileIds 要新增的附件
     * @param deleteIds 要删除的附件
     * @throws Exception
     */
    void addAttachRelation(String objectId, String attachType, String fileIds, String deleteIds) throws Exception;

    /**
     * 删除附件关联关系信息以及附件信息
     *
     * @param objectId
     * @param attachId
     * @throws Exception
     */
    void deleteAttachRelation(String objectId, String attachId) throws Exception;
}
